// pages/merchant/createdetail.js
const Common = require('../../utils/common')
const request = require('../../utils/request')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 订单基本信息
    carNumber: "",
    planArriveDate: "",
    planArriveTime: "8:00",
    planEndTime: "10:00",
        // 所属商户/当铺
    merchants: [],           // 接口列表对象 [{id, name}, ...]
    merchantIndex: 0,        // picker 索引
    merchantText: "",        // 展示文本
    selectedMerchantId: null,

    addresses: [],           // 所属当铺列表 [{id, name}, ...]
    addressIndex: 0,
    addressText: "",
    selectedAddressId: null,
    // 商品列表
    products: [{
      goodsId: null,
      goodsCode: "",
      goodsName: "",
      unit: "",
      number: "",
      origin: "",
      originRegion: [],
      hasCertificate: true,
      certification: ""
    }],
    // 车牌号键盘
    showPlateKeyboard: false,
    searchResult: [],        // 搜索结果
    showSearchResult: false, // 是否显示搜索结果
    activeIndex: -1,         // 当前激活的商品索引
    searchTimer: 300   
  },
 // 获取商户列表，默认选择第一条并拉取地址
  fetchMerchants() {
    request.get('/admin-api/mini/home/getMerchant').then(res => {
      if (!res) return;
      const data = res.data || res;
      const list = Array.isArray(data) ? data : (data.list || []);
      if (list.length === 0) {
        this.setData({
          merchants: [],
          merchantText: ''
        });
        return;
      }
      const first = list[0];
      this.setData({
        merchants: list,
        merchantIndex: 0,
        merchantText: first.name || first.title || '',
        selectedMerchantId: first.id || first.value || null
      });
      // 拉取对应地址
      if (this.data.selectedMerchantId) {
        this.fetchAddresses(this.data.selectedMerchantId);
      }
    }).catch(err => {
      console.error('获取商户失败', err);
    });
  },

  // 根据商户 id 获取地址列表
  fetchAddresses(merchantId) {
    if (!merchantId) {
      this.setData({ addresses: [], addressText: '', selectedAddressId: null });
      return;
    }
    request.get('/admin-api/mini/home/getAddress', { id: merchantId }).then(res => {
      if (!res) return;
      const data = res.data || res;
      const list = Array.isArray(data) ? data : (data.list || []);
      if (list.length === 0) {
        this.setData({
          addresses: [],
          addressText: ''
        });
        return;
      }
      const first = list[0];
      this.setData({
        addresses: list,
        addressIndex: 0,
        addressText: first.address || first.title || '',
        selectedAddressId: first.id || first.value || null
      });
    }).catch(err => {
      console.error('获取地址失败', err);
    });
  },

  // 商户选择变化
  onMerchantChange(e) {
    const idx = e.detail.value;
    const merchant = this.data.merchants[idx] || {};
    this.setData({
      merchantIndex: idx,
      merchantText: merchant.name || merchant.title || '',
      selectedMerchantId: merchant.id || merchant.value || null,
      // 清空地址选择，等待新数据
      addresses: [],
      addressIndex: 0,
      addressText: '',
      selectedAddressId: null
    });
    if (merchant.id || merchant.value) {
      this.fetchAddresses(merchant.id || merchant.value);
    }
  },

  // 当铺选择变化
  onAddressChange(e) {
    const idx = e.detail.value;
    const address = this.data.addresses[idx] || {};
    this.setData({
      addressIndex: idx,
      addressText: address.address || address.title || '',
      selectedAddressId: address.id || address.value || null
    });
  },  
// 产地（省市区）选择回调
bindRegionChange(e) {
  const index = e.currentTarget.dataset.index;
  const region = e.detail.value || [];
  const origin = region.length ? region.join(' ') : '';
  const products = [...this.data.products];

  if (index == null || index < 0 || index >= products.length) {
    return;
  }

  products[index].origin = origin;
  products[index].originRegion = region;

  this.setData({
    products
  });
},
  // 搜索输入处理
onSearchInput(e) {
  const index = e.currentTarget.dataset.index;
  const value = e.detail.value;
  
  // 显示搜索结果框
  this.setData({
    showSearchResult: true,
    activeIndex: index
  });
  
  // 防抖处理
  if (this.data.searchTimer) {
    clearTimeout(this.data.searchTimer);
  }
  
  // 输入为空时清空结果
  if (!value.trim()) {
    this.setData({
      searchResult: []
    });
    return;
  }
  
  // 延迟搜索，减少接口请求次数
  this.data.searchTimer = setTimeout(() => {
    this.searchProducts(value, index);
  }, 300);
},

// 调用搜索接口
searchProducts(keyword, index) {
  request.get('/admin-api/system/goods-info/getList', {
    keyword: keyword
  }).then(res => {
    if (res.code === 0) {
      if(res.data.length === 0){
        wx.showToast({
          title: '商品搜索无结果',
          icon: 'none'
        });
      }else{
        this.setData({
          searchResult: res.data || []
        });
      }
    } else {
      wx.showToast({
        title: res.msg || '搜索失败',
        icon: 'none'
      });
    }
  }).catch(err => {
    console.error('搜索失败', err);
    wx.showToast({
      title: '搜索失败',
      icon: 'none'
    });
  });
},

// 选择商品
selectProduct(e) {
  console.log(e)
  const item = e.currentTarget.dataset.item;
  const { activeIndex } = this.data;
  
  // 验证 activeIndex 是否有效
  if (activeIndex === -1 || activeIndex >= this.data.products.length) {
    console.error('无效的商品索引:', activeIndex);
    return;
  }
  
  console.log(e)
  const products = [...this.data.products];
  console.log(products)
  products[activeIndex].goodsName = item.name;
  products[activeIndex].goodsId = item.id;
  products[activeIndex].goodsCode = item.code;
  products[activeIndex].unit = item.unit || '';
  // 可以根据需要设置其他字段，如：
  // products[activeIndex].productId = item.id;
  
  this.setData({
    products,
    showSearchResult: false,
    searchResult: [],
    activeIndex: -1 // 重置激活索引
  });
},

// 在点击页面其他区域时隐藏搜索结果
onHideSearchResult() {
  this.setData({
    showSearchResult: false,
    searchResult: []
  });
},
// 阻止事件冒泡
stopPropagation() {
  // 空方法，用于阻止事件冒泡
},
  // 返回上一页
  navigateBack() {
    wx.navigateBack();
  },

  // 显示车牌号键盘
  showPlateKeyboard() {
    this.setData({
      showPlateKeyboard: true
    });
  },

  // 隐藏车牌号键盘
  hidePlateKeyboard() {
    this.setData({
      showPlateKeyboard: false
    });
  },

  // 车牌号确认
  onPlateConfirm(e) {
    const plateNumber = e.detail.value;
    this.setData({
      carNumber: plateNumber,
      showPlateKeyboard: false
    });
  },

  // 显示时间选择器
  showTimePicker() {
    this.setData({
      showTimePicker: true
    });
  },

  // 隐藏时间选择器
  hideTimePicker() {
    this.setData({
      showTimePicker: false
    });
  },

  // 设置订单类型
  setOrderType(e) {
    this.setData({
      orderType: e.currentTarget.dataset.type
    });
  },

  // 添加商品
  addProduct() {
    const newProduct = {
      goodsName: "",
      number: "",
      origin: "",
      originRegion: [],
      hasCertificate: true,
      certification: ""
    };
    const products = [...this.data.products, newProduct];
    this.setData({
      products
    });
  },

  // 删除商品
  deleteProduct(e) {
    const index = e.currentTarget.dataset.index;
    if (this.data.products.length <= 1) {
      wx.showToast({
        title: '至少保留一个商品',
        icon: 'none'
      });
      return;
    }
    const products = [...this.data.products];
    products.splice(index, 1);
    this.setData({
      products
    });
  },

  // 商品信息变化
  onProductChange(e) {
    const index = e.currentTarget.dataset.index;
    const field = e.currentTarget.dataset.field;
    const value = e.detail.value;

    const products = [...this.data.products];
    products[index][field] = value;
    this.setData({
      products
    });
  },

  // 切换是否有承诺达标合格证
  toggleHasCertificate(e) {
    const index = e.currentTarget.dataset.index;
    const value = e.currentTarget.dataset.value === 'true';
    
    const products = [...this.data.products];
    products[index].hasCertificate = value;
    
    // 如果选择"没有"，清空已上传的证书图片
    if (!value) {
      products[index].certification = '';
    }
    
    this.setData({
      products
    });
  },

  // 上传合格证明
  uploadCertificate(e) {
    const index = e.currentTarget.dataset.index;
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        // 临时路径
        const tempFilePath = res.tempFilePaths[0];
        wx.showLoading({
          title: '正在上传',
        })
        // 这里可以上传到服务器，获取永久链接
        request.upload('/admin-api/infra/file/upload', tempFilePath).then(res => {
          if (res.code === 0) {
            // 这里暂时使用临时路径
            const products = [...this.data.products];
            products[index].certification = res.data;
            this.setData({
              products
            });
          }
        });
        wx.hideLoading()
      }
    });
  },

  // 开始日期
  bindDateChange: function (e) {
    this.setData({
      planArriveDate: e.detail.value
    })
  },

  // 预估时间
  planArriveTimeChange: function (e) {
    this.setData({
      planArriveTime: e.detail.value
    })
  },
  // 预估时间
  planEndTimeChange: function (e) {
    this.setData({
      planEndTime: e.detail.value
    })
  },
  // 时间选择变化
  onTimeChange(e) {
    const value = e.detail.value;
    const year = this.data.years[value[0]];
    const month = this.data.months[value[1]];
    const day = this.data.days[value[2]];
    const hour = this.data.hours[value[3]];
    const minute = this.data.minutes[value[4]];
    const timeStr = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')} ${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}`;

    this.setData({
      arriveTime: timeStr,
      // showTimePicker: false
    });
  },

  // 保存订单
  saveOrder() {
    // 简单验证
    if (!this.data.carNumber) {
      wx.showToast({
        title: '请输入车牌号',
        icon: 'none'
      });
      return;
    }

    if (!this.data.planArriveDate) {
      wx.showToast({
        title: '请选择预估日期',
        icon: 'none'
      });
      return;
    }

    // 验证商品信息
    for (let i = 0; i < this.data.products.length; i++) {
      const product = this.data.products[i];
      if (!product.goodsName) {
        wx.showToast({
          title: `请输入商品${i+1}名称`,
          icon: 'none'
        });
        return;
      }

      if (!product.number) {
        wx.showToast({
          title: `请输入商品${i+1}数量`,
          icon: 'none'
        });
        return;
      }

      if (!product.origin) {
        wx.showToast({
          title: `请输入商品${i+1}产地`,
          icon: 'none'
        });
        return;
      }

      // if (!product.certification) {
      //   wx.showToast({
      //     title: `请上传商品${i+1}承诺达标合格证`,
      //     icon: 'none'
      //   });
      //   return;
      // }
    }

    // 这里可以提交订单数据到服务器
    wx.showLoading({
      title: '保存中...'
    });
    // 请求详情接口
    request.post('/admin-api/system/order-apply/create', this.data).then(res => {
      console.log("res:" + res)
      wx.hideLoading()
      if (res.code === 0) {
        // 模拟保存成功
        setTimeout(() => {
          wx.showToast({
            title: '保存成功',
            icon: 'success'
          });

          // 返回订单列表页
          // setTimeout(() => {
          //   wx.navigateBack();
          // }, 1500);
          const pages = getCurrentPages();
          const prevPage = pages[pages.length - 2]; // 上一页（页面 A）的实例

          // 3. 调用页面 A 的刷新方法（需在页面 A 中定义）
          prevPage.refreshData(); // 例如：页面 A 中定义了 refreshData 方法

          // 4. 返回上一页
          wx.navigateBack({
            delta: 1 // 返回的页面数
          });
        }, 1000);
      }
    })

  },

  // 初始化时间选择器数据
  initTimeData() {
    // 年份
    const years = [];
    const currentYear = new Date().getFullYear();
    for (let i = currentYear - 1; i <= currentYear + 1; i++) {
      years.push(i);
    }

    // 月份
    const months = [];
    for (let i = 1; i <= 12; i++) {
      months.push(i);
    }

    // 日期
    const days = [];
    for (let i = 1; i <= 31; i++) {
      days.push(i);
    }

    // 小时
    const hours = [];
    for (let i = 0; i <= 23; i++) {
      hours.push(i);
    }

    // 分钟
    const minutes = [];
    for (let i = 0; i <= 59; i++) {
      minutes.push(i);
    }

    // 当前时间
    const now = new Date();
    const yearIndex = years.indexOf(now.getFullYear());
    const monthIndex = now.getMonth(); // 月份从0开始
    const dayIndex = now.getDate() - 1;
    const hourIndex = now.getHours();
    const minuteIndex = now.getMinutes();

    this.setData({
      years,
      months,
      days,
      hours,
      minutes,
      timePickerValue: [yearIndex, monthIndex, dayIndex, hourIndex, minuteIndex]
    });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 初始化时间选择器数据
    // this.initTimeData();
    // 加载商户 & 地址（默认选择第一条）
    this.fetchMerchants();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    this.setData({
      planArriveDate: Common.formatDate(new Date())
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})